var cc__importDefault = __importDefault;
Object.defineProperty(exports, "__esModule", {
  value: true
});
var $GlobalEnum = require("GlobalEnum");
var $1$LevelDataTemplate = require("LevelDataTemplate");
var r = cc__importDefault($1$LevelDataTemplate);
var def_GameData = function () {
  function _ctor() { }
  _ctor.init = function () {
    this.data = {};
    this.data[$GlobalEnum.GlobalEnum.GameDataType.levelData] = r.default.getData();
  };
  _ctor.setData = function (t, e) {
    for (const typeKey in $GlobalEnum.GlobalEnum.GameDataType) { // 使用const替代var，提高可读性
      const urlIndex = this.getUrlsIndex($GlobalEnum.GlobalEnum.GameDataType[typeKey], e); // 获取URL索引
      if (urlIndex >= 0) {
        // 存储JSON数据
        this.data[$GlobalEnum.GlobalEnum.GameDataType[typeKey]] = t[urlIndex].json;
      } else {
        console.warn("数据类型不存在：", $GlobalEnum.GlobalEnum.GameDataType[typeKey]); // 警告数据类型不存在
      }
    }

    for (const goodsKey in $GlobalEnum.GlobalEnum.GoodsType) { // 使用const替代var
      const currentGoodsType = $GlobalEnum.GlobalEnum.GoodsType[goodsKey]; // 获取当前商品类型
      if (this.data[currentGoodsType] && Array.isArray(this.data[currentGoodsType])) {
        const itemsArray = this.data[currentGoodsType]; // 使用更具描述性的变量名
        const itemsMap = {}; // 用于存放商品ID映射
        for (let i = itemsArray.length - 1; i >= 0; --i) {
          itemsMap[itemsArray[i].id] = itemsArray[i]; // 将商品按ID映射
        }
        this.data[currentGoodsType] = itemsMap; // 更新数据为映射形式
      }
    }
  };
  _ctor.getUrlsIndex = function (t, e) {
    for (let index = e.length - 1; index >= 0; --index) { // 使用let替代var
      if (e[index].indexOf(t) >= 0) {
        return index; // 找到匹配项，返回索引
      }
    }
    return -1; // 未找到匹配项，返回-1
  };
  _ctor.addData = function (t, e) {
    if (this.data[t]) {
      console.warn("对应类型的数据已经存在，请检查类型是否重名:", t);
    } else {
      this.data[t] = e;
    }
  };
  _ctor.getData = function (t, e) {
    if (this.data[t] === undefined) {
      console.warn("不存在对应类型的数据：", t); // 发出警告信息
      return null; // 返回null表示未找到
    } else if (e === undefined) {
      return this.data[t]; // 返回数据类型
    } else {
      return this.data[t][e]; // 返回指定数据属性
    }
  };
  _ctor.getLevelData = function (t) {
    const levelData = this.data[$GlobalEnum.GlobalEnum.GameDataType.levelData]; // 获取关卡数据
    if (!levelData) {
      cc.log("不存在关卡数据，使用示例数据"); // 记录警告信息
      return r.default.getData(); // 返回示例数据
    }

    if (levelData[t]) {
      return levelData[t]; // 返回指定关卡数据
    }

    const keys = Object.keys(levelData); // 获取所有关卡的键
    const randomIndex = Math.round(Math.random() * (keys.length - 1)); // 随机索引

    if (parseInt(keys[randomIndex]) <= 3) {
      cc.log("关卡" + t + "不存在数据，使用随机关卡数据：" + keys[keys.length - 1]); // 记录信息
      return levelData[keys[keys.length - 1]]; // 返回最后一个关卡的数据
    } else {
      cc.log("关卡" + t + "不存在数据，使用随机关卡数据：" + keys[randomIndex]); // 记录信息
      return levelData[keys[randomIndex]]; // 返回随机选中的关卡数据
    }
  };
  _ctor.getGoodsData = function (t, e) {
    if (undefined === this.data[t]) {
      console.warn("不存在对应类型的商品数据：", t);
      return null;
    } else if (undefined === e) {
      return this.data[t];
    } else {
      return this.data[t][e];
    }
  };
  _ctor.data = {};
  return _ctor;
}();
exports.default = def_GameData;